Complicated pieces of hardware typically comprise millions of transistors. Circuit designers typically utilize computer-aided design programs to aid their design process. Once a designer has finished the conceptual design of a circuit, there are many optimizations which can be made.
For example, for low power design, it is often useful to add logic elements to keep other elements from operating when they are not needed.
Reference is now made to FIGS. 1A and 1B, which illustrate the changes that may be made for low power operation. FIG. 1A shows a first circuit 10 having a flip-flop 12. Like all flip-flops, flip-flop 12 is controlled by a clock signal CLK. When clock signal CLK goes high, flip-flop 12 puts out a value Q calculated from its input I, which may be a function of a logic circuit 14, which, in turn, may be a function of a plurality of inputs (a, b and c are shown). Flip-flop 12 will perform the calculation, irrespective of whether or not input I has changed. A circuit designer, when coming to determine how to minimize the power consumption of his circuit, may review the activities of the flip-flops and may “gate” those which he knows will not change value given a particular situation. To do so, the designer may add circuitry to disconnect the clock input to the flip-flop.
This change is shown in FIG. 1B. In the circuit, now labeled 10′, flip-flop 12 remains as does logic circuit 14, but the clock signal to flip-flop 12 has changed. The clock signal, labeled GCLK, is now a gated clock signal which is only active when both clock signal CLK and an enable signal EN are active. Gated clock signal GCLK is generated with a gate 16. Clock-gating performed like this on an individual flip-flop is known as “fine-grained” clock gating.
Another method for clock-gating is known as “coarse-grained” clock gating. Under coarse-grained clock gating, a large number of flip-flops are shut off using the same clock gating function, thus providing a significant reduction in power usage. For example, sections of a circuit which operate as a single unit, such as a floating point unit, may be clock-gated.
Other candidates for clock gating are not always so easy to determine. Moreover, the logic function which determines when a circuit should be gated is implemented with logic gates, such as flip-flops. If the logic function is complicated compared to the circuit to be gated (i.e. it has more gates than the circuit being shut off), then the clock gating saves little, if any, power.
The following articles discuss automatic clock-gating methods:                L. Benini, G. De Micheli, E. Macii, M. Poncino, R. Scarsi, “Symbolic Synthesis of Clock-Gating Logic for Power Optimization of Control-Oriented Synchronous Networks”, 1997 European Design and Test Conference;        F. Theeuwen, E. Seelen, “Power Reduction through Clock Gating by Symbolic Manipulation”, Proc. IFIP Int. Workshop on Logic and Architecture Synthesis, 1996.        N. Raghavan, V. Akella, S. Bakshi, “Automatic Insertion of Gated Clocks at Register Transfer Level”, Proc. Twelfth International Conference on VLSI Design, 1999; and        T. Lang, E. Musoll, J. Cortadella, “Individual Flip-Flops with Gated Clocks for Low Power Datapaths”, IEEE Transactions on Circuits and Systems-II: Analog and Digital Signal Processing, Vol. 44, No. 6, June 1997.        
It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements.